package com.platform.dao;

import com.platform.domain.*;
import com.platform.domain.query.TbSysUserQuery;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: wangyanginfo
 * Date: 12-8-20
 * Time: 下午6:28
 * To change this template use File | Settings | File Templates.
 */
public interface UserDao {

    /**
     * 根据主键查询用户
     *
     * @param userId 用户ID
     * @return 用户对象
     * @throws Exception
     */
    TbSysUser queryUser(String userId) throws Exception;

    /**
     * 根据登录名查询用户
     * @param loginId 登录ID
     * @return 用户对象
     * @throws Exception
     */
    TbSysUser queryUserByLoginId(String loginId) throws Exception;

    /**
     * 根据用户对象条件查询符合条件的用户对象集合
     *
     * @param user 用户对象
     * @return 用户对象集合
     * @throws Exception
     */
    public List<TbSysUser> queryUserInfos(TbSysUserQuery user) throws Exception;

    /**
     * 根据用户对象条件查询符合条件的用户记录总条数
     *
     * @param user 用户对象
     * @return 记录总条数
     * @throws Exception
     */
    public int queryUserInfosCount(TbSysUserQuery user) throws Exception;

    /**
     * 插入新的用户
     *
     * @param user 用户对象
     * @return 执行是否成功标识
     * @throws Exception
     */
    int insertUser(TbSysUser user) throws Exception;

    /**
     * 更新用户分类
     *
     * @param user 用户对象
     * @return 执行是否成功标识
     * @throws Exception
     */
    int updateUser(TbSysUser user) throws Exception;

    /**
     * 根据主键删除用户
     *
     * @param userId 用户ID
     * @return 执行是否成功标识
     * @throws Exception
     */
    int deleteUser(String userId) throws Exception;

    /**
     * 根据主键查询用户安全问题
     *
     * @param key 用户安全问题KEY
     * @return 用户安全问题对象
     * @throws Exception
     */
    TbSysUserSecurity queryUserSecurity(TbSysUserSecurityKey key) throws Exception;


    /**
     * 根据主键查询用户安全问题
     *
     * @param userSecurity 用户安全问题
     * @return 用户安全问题对象集合
     * @throws Exception
     */
    List<TbSysUserSecurity> queryUserSecurity(TbSysUserSecurity userSecurity) throws Exception;

    /**
     * 插入用户安全问题
     *
     * @param userSecurity 用户安全问题
     * @return 执行是否成功标识
     * @throws Exception
     */
    int insertUserSecurity(TbSysUserSecurity userSecurity) throws Exception;

    /**
     * 更新用户安全问题
     *
     * @param userSecurity 用户安全问题
     * @return 执行是否成功标识
     * @throws Exception
     */
    int updateUserSecurity(TbSysUserSecurity userSecurity) throws Exception;

    /**
     * 根据主键删除用户安全问题
     *
     * @param key 用户安全问题KEY
     * @return 执行是否成功标识
     * @throws Exception
     */
    int deleteUserSecurity(TbSysUserSecurityKey key) throws Exception;

    /**
     * 根据主键查询用户授权信息
     *
     * @param key 用户授权信息KEY
     * @return 用户授权信息对象
     * @throws Exception
     */
    TbSysUserAuthorization queryUserAuthorization(TbSysUserAuthorizationKey key) throws Exception;

    /**
     * 根据用户授权查询用户授权信息
     *
     * @param userAuthorization 用户授权信息
     * @return 用户授权信息对象集合
     * @throws Exception
     */
    List<TbSysUserAuthorization> queryUserAuthorization(TbSysUserAuthorization userAuthorization) throws Exception;

    /**
     * 插入用户授权信息
     *
     * @param userAuthorization 用户授权信息
     * @return 执行是否成功标识
     * @throws Exception
     */
    int insertUserAuthorization(TbSysUserAuthorization userAuthorization) throws Exception;

    /**
     * 更新用户授权信息
     *
     * @param userAuthorization 用户授权信息
     * @return 执行是否成功标识
     * @throws Exception
     */
    int updateUserAuthorization(TbSysUserAuthorization userAuthorization) throws Exception;

    /**
     * 根据主键删除用户授权信息
     *
     * @param key 用户授权信息KEY
     * @return 执行是否成功标识
     * @throws Exception
     */
    int deleteUserAuthorization(TbSysUserAuthorizationKey key) throws Exception;

    /**
     * 根据用户ID删除用户授权信息
     *
     * @param userId 用户ID
     * @return 执行是否成功标识
     * @throws Exception
     */
    int deleteUserAuthorizationByUserId(String userId) throws Exception;

}
